问题描述(难度简单)
Given a singly linked list, determine if it is a palindrome.
Example 1:
1 | Input: 1->2 |
Example 2:
1 | Input: 1->2->2->1 |
Follow up:
Could you do it in O(n) time and O(1) space?
方法一:Using Reverse LinkedList
倒转链表的变形,首先通过快慢指针定位到链表的中间位置,然后将后半部分的链表倒转。最后遍历一遍进行比较。
1 | package P234; |
总结
- 链表定位中间位置可以用快慢指针,一个走一步一个走两步。
- 链表反转可以用递归实现。